Ficheros de texto

Crear fichero y escribir texto


In [70]:
texto = "Una línea con texto\nOtra línea con texto"

In [71]:
fichero = open('fichero.txt','w')  # fichero.txt ruta donde lo crearemos, w indica modo de escritura, write (puntero principio)

In [72]:
fichero.write(texto) # escribimos el texto


Out[72]:
40

In [73]:
fichero.close()  # cerramos el fichero

Lectura de un fichero de texto


In [1]:
fichero = open('fichero.txt','r')  # modo lectura read, por defecto ya es r, no es necesario

In [2]:
texto = fichero.read() # lectura completa

In [3]:
fichero.close()

In [4]:
print(texto)


Una línea con texto
Otra línea con texto
Otra línea más abajo del todo

In [7]:
fichero = open('fichero.txt','r')
texto = fichero.readlines() # leer creando una lista de líneas
fichero.close()
print(texto)


['Una línea con texto\n', 'Otra línea con texto\n', 'Otra línea más abajo del todo']

In [8]:
print(texto[-1]) # Última línea


Otra línea más abajo del todo

Extensión de un fichero de texto


In [87]:
fichero = open('fichero.txt','a')  # modo a, append, añadir - extender (puntero al final)

In [89]:
fichero.write('\nOtra línea más abajo del todo')

In [90]:
fichero.close()

Lectura de un fichero no existente


In [2]:
fichero = open('fichero_inventado.txt','r')


---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-2-c2865d5b1523> in <module>()
----> 1 fichero = open('fichero_inventado.txt','r')

FileNotFoundError: [Errno 2] No such file or directory: 'fichero_inventado.txt'

In [4]:
fichero = open('fichero_inventado.txt','a+')  # Extensión con escritura simultánea, crea fichero si no existe

Lectura línea a línea


In [76]:
fichero = open('fichero.txt','r')

In [77]:
fichero.readline()   # Línea a línea


Out[77]:
'Una línea con texto\n'

In [78]:
fichero.readline()


Out[78]:
'Otra línea con texto'

In [79]:
fichero.readline()


Out[79]:
''

In [80]:
fichero.close()

Lectura línea a línea secuencial


In [93]:
with open("fichero.txt", "r") as fichero:
    for linea in fichero:
        print(linea)


Una línea con texto

Otra línea con texto

Otra línea más abajo del todo

Manejando el puntero


In [10]:
fichero = open('fichero.txt','r')
fichero.seek(0) # Puntero al principio
fichero.read(10) # Leemos 10 carácteres


Out[10]:
'Una línea '

In [11]:
fichero.read(10) # Leemos 10 carácteres más, a partir del 10 donde está el puntero


Out[11]:
'con texto\n'

In [12]:
fichero.seek(0)
fichero.seek( len(fichero.readline()) ) # Leemos la primera línea y situamos el puntero al principio de la segunda


Out[12]:
20

In [13]:
fichero.read() # Leemos todo lo que queda del puntero hasta el final


Out[13]:
'\nOtra línea con texto\nOtra línea más abajo del todo'

Lectura y escritura a la vez


In [161]:
fichero2 = open('fichero2.txt','w')

In [162]:
texto = "Línea 1\nLínea 2\nLínea 3\nLínea 4"

In [163]:
fichero2.write(texto)


Out[163]:
31

In [164]:
fichero2.close()

In [165]:
fichero2 = open('fichero2.txt','r+')  # + escritura simultánea, puntero al principio por defecto

In [166]:
fichero2.write('asdfgh')


Out[166]:
6

In [167]:
fichero2.close()

Modificar una línea específica


In [168]:
fichero2 = open('fichero2.txt','r+')  # modo lectura con escritura, puntero al principio por defecto

In [169]:
texto = fichero2.readlines() # leemos todas las líneas

In [170]:
texto[2] = "Esta es la línea 3 modificada\n"  # indice menos 1

In [171]:
texto


Out[171]:
['asdfgh1\n', 'Línea 2\n', 'Esta es la línea 3 modificada\n', 'Línea 4']

In [172]:
fichero2.seek(0) # Ponemos el puntero al principio
fichero2.writelines(texto)

In [173]:
fichero2.close()